package com.sz.common.base.dao.ext;

/**
 * Package: com.sz.common.base.dao.ext <br>
 * Function: TODO: ADD FUNCTION <br>
 * Author: Charles. <br>
 * Date: 2017-02-23 10:03:00.
 */
public class FieldExp {
    String name;
    Object value;
    /**
     * 字段的JDBC 类型，参考com.sz.common.base.dao.schema.SqlDataType
     */
    String type;
    /**
     * 字段操作
     */
    String op = "=";
    /**
     * true--字段值不需要参数化(用于调用SQL函数)，false--字段值参数化SQL
     * 缺省为false，字段参数化，防止SQL注入
     */
    boolean fixed = false;

    /**
     * @param name
     * @param value
     */
    public FieldExp(String name, Object value) {
        this(name, value, null);
    }

    /**
     * @param name
     * @param value
     * @param type
     */
    public FieldExp(String name, Object value, String type) {
        this(name, value, type, "=");
    }

    /**
     * @param name
     * @param value
     * @param type
     * @param op
     */
    public FieldExp(String name, Object value, String type, String op) {
        this(name, value, type, op, false);
    }

    /**
     * @param name
     * @param value
     * @param type  字段的JDBC 类型，参考com.sz.common.base.dao.schema.SqlDataType
     * @param op
     * @param fixed true--字段值不需要参数化(用于调用SQL函数)，false--字段值参数化SQL
     *              缺省为false，字段参数化，防止SQL注入
     */
    public FieldExp(String name, Object value, String type, String op, boolean fixed) {
        if (name == null || name.trim().length() == 0) {
            throw new IllegalArgumentException("field name cannot be empty");
        }
        this.name = name;
        this.value = value;
        this.type = type;
        this.fixed = fixed;

        if (op != null && op.trim().length() > 0) {
            this.op = op;
        }
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Object getValue() {
        return value;
    }

    public void setValue(Object value) {
        this.value = value;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getOp() {
        return op;
    }

    public void setOp(String op) {
        this.op = op;
    }

    /**
     * true--字段值不需要参数化(用于调用SQL函数)，false--字段值参数化SQL
     * 缺省为false，字段参数化，防止SQL注入
     *
     * @return
     */
    public boolean getFixed() {
        return fixed;
    }

    /**
     * true--字段值不需要参数化(用于调用SQL函数)，false--字段值参数化SQL
     * 缺省为false，字段参数化，防止SQL注入
     *
     * @param fixed
     */
    public void setFixed(boolean fixed) {
        this.fixed = fixed;
    }


//    private String escapeCharacter(String str) {
//        if (str != null) {
//            str = str.replaceAll("<","&lt;").replaceAll(">","&gt;");
//        }
//        return str;
//    }
}
